import { createRouter, createWebHashHistory } from 'vue-router'
import Layout from '@/views/layout/index.vue'
import * as TokenUtils from '@/utils/tokenUtils.js'
// 公共路由
const publicRoutes = [{
  path: '/',
  component: () => import('@/views/layout/index.vue'),
  redirect: {
    name: 'home'
  },
  children: [
    {
      path: 'home',
      name: 'home',
      component: () => import('@/views/home/index.vue')
    },
    {
      path: 'system',
      name: 'system',
      children: [
        {
          path: 'menu',
          name: 'menu',
          children: [
            {
              path: '',
              redirect: { name: 'menu-list' }
            },
            {
              path: 'list',
              name: 'menu-list',
              component: () => import('@/views/system/menu/index.vue')
            },
            {
              path: 'add',
              name: 'menu-add',
              component: () => import('@/views/system/menu/index.vue')
            }
          ]
        }
      ]
    }
  ]
}, {
  path: '/login',
  name: 'login',
  component: () =>
    import('@/views/login/index.vue')
},
{
  path: '/three',
  name: 'three',
  component: () =>
    import('@/views/three/index.vue')
}]
// 动态路由，基于用户权限动态去加载
export const dynamicRoutes = [
    {
      path: '/system/user-auth',
      component: Layout,
      hidden: true,
      permissions: ['system:user:edit'],
      children: [
        {
          path: 'role/:userId(\\d+)',
          // component: () => import('@/views/system/user/authRole'),
          name: 'AuthRole',
          meta: { title: '分配角色', activeMenu: '/system/user' }
        }
      ]
    },
    {
      path: '/system/role-auth',
      component: Layout,
      hidden: true,
      permissions: ['system:role:edit'],
      children: [
        {
          path: 'user/:roleId(\\d+)',
          // component: () => import('@/views/system/role/authUser'),
          name: 'AuthUser',
          meta: { title: '分配用户', activeMenu: '/system/role' }
        }
      ]
    },
    {
      path: '/system/dict-data',
      component: Layout,
      hidden: true,
      permissions: ['system:dict:list'],
      children: [
        {
          path: 'index/:dictId(\\d+)',
          // component: () => import('@/views/system/dict/data'),
          name: 'Data',
          meta: { title: '字典数据', activeMenu: '/system/dict' }
        }
      ]
    },
    {
      path: '/monitor/job-log',
      component: Layout,
      hidden: true,
      permissions: ['monitor:job:list'],
      children: [
        {
          path: 'index/:jobId(\\d+)',
          // component: () => import('@/views/monitor/job/log'),
          name: 'JobLog',
          meta: { title: '调度日志', activeMenu: '/monitor/job' }
        }
      ]
    },
    {
      path: '/tool/gen-edit',
      component: Layout,
      hidden: true,
      permissions: ['tool:gen:edit'],
      children: [
        {
          path: 'index/:tableId(\\d+)',
          // component: () => import('@/views/tool/gen/editTable'),
          name: 'GenEdit',
          meta: { title: '修改生成配置', activeMenu: '/tool/gen' }
        }
      ]
    }
]
const router = createRouter({
    history: createWebHashHistory(),
    routes: publicRoutes //createRouter的对象参数名字routes不能改变
})
// 全局前置守卫
router.beforeEach((to, from, next)=>{
    console.log('TokenUtils=', TokenUtils, TokenUtils.getToken())
    // 避免路由无限重定向
    if(to.path === '/login') next()
    if(TokenUtils.getToken()){
      // 有token
      console.log('有token')
      next()
    } else{
      console.log('无token')
      next('/login')
    }
})
export default router